package com.yw.pms.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yw.pms.dao.entity.Operator;
import com.yw.pms.dao.entity.Product;
import com.yw.pms.dao.entity.Module;
import com.yw.pms.service.ModuleService;
import com.yw.pms.service.ProductService;
import com.yw.pms.utils.CommonResp;

/**
 * @Description: 模块管理控制器
 * @author Tenny.Tang
 * @date 2017年12月22日 下午3:06:05
 */
@Controller
@RequestMapping("/module")
public class ModuleController {

	@Resource
	private ModuleService moduleService;
	
	@Resource
	private ProductService productService;

	/**
	 * @Description 跳转到添加模块界面
	 * @author Tenny.Tang
	 * @date 2017年12月27日 下午3:00:01
	 */
	@RequestMapping("/toAddModule")
	String toAddModulePage(Model model) {
		Product product = new Product();
		CommonResp<List<Product>> resp = productService.getAllProduct(product);
		if (resp.isSuccess()) {
			model.addAttribute("productList", resp.getData());
		}
		return "addModule";
	}
	
	/**
	 * @Description 跳转到模块列表页
	 * @author Tenny.Tang
	 * @date 2017年12月27日 下午3:00:01
	 */
	@RequestMapping("/toModulePage")
	String toModulePage() {
		return "module";
	}
	
	@RequestMapping(value = "/addModule", method = RequestMethod.POST)
	@ResponseBody
	CommonResp<Boolean> addModule(Module module, HttpSession session) {
		Operator operator = getOperator(session);
		module.setOperatorId(operator.getId());
		return moduleService.addModule(module);
	}
	
	/**
	 * @Description: 模块列表查询
	 * @author Tenny.Tang
	 * @date 2017年12月27日 下午3:00:01
	 */
	@RequestMapping("/moduleList")
	@ResponseBody CommonResp<List<Module>> moduleList(Module module){
		return moduleService.queryModuleList(module);
	}
	
	/**
	 * @Description: 根据产品ID查询模块
	 * @author Tenny.Tang
	 * @date 2017年12月27日 下午3:00:01
	 */
	@RequestMapping("/moduleListByProductId")
	@ResponseBody CommonResp<List<Module>> moduleListByProductId(Integer productId){
		Module module = new  Module();
		module.setProductId(productId);
		return moduleService.queryModuleListByProductId(module);
	}
	
	/**
	 * @Description: 删除模块
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午10:00:01
	 */
	@RequestMapping("/deleteModule")
	@ResponseBody
	CommonResp<Boolean> deleteModule(String id) {
		return moduleService.deleteModule(id);
	}
	
	/**
	 * @Description: 跳转到更新模块页面
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午10:23:41
	 */
	@RequestMapping("/gotoUpdateModule")
	String gotoUpdate(String id,Model model,HttpSession session){
		CommonResp<Module> resp = moduleService.get(id);
		if(resp.isSuccess()) {
			model.addAttribute("module", resp.getData());
		}
		Operator operator= getOperator(session);
		model.addAttribute("operator", operator);
		return "updateModule";
	}
	
	/**
	 * @Description: 更新模块页面
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午14:23:41
	 */
	@RequestMapping("/updateModule")
	@ResponseBody CommonResp<Boolean> updateModule(Module module){
		return moduleService.updateModule(module);
	}
	
	/**
	 * 
	 * @Description: 验证模块名称的唯一性
	 * @author Tenny.Tang
	 * @date 2017年12月27日 上午10:53:41
	 */
	@RequestMapping(value="/isModuleNameUniq",method=RequestMethod.POST)
	@ResponseBody CommonResp<Boolean> isModuleNameUniq(String moduleName, String productId){
		return moduleService.isModuleNameUniq(moduleName, productId);
	}
	
	private Operator getOperator(HttpSession session) {
		Operator operator = (Operator) session.getAttribute("operator");
		return operator;
	}
}
